9.11 Secondary Cache Error Protection and Handling
Whenever the processor writes the secondary cache data array, it drives the proper ECC on SCDataChk(8:0) and even parity on SCDataChk(9).
If a correctable error is detected, in-line correction is automatically made without affecting latency. The processor informs the external agent that a correctable error was detected and corrected by asserting SysCorErr* for one SysClk cycle.
If an uncorrectable error is detected, the secondary cache unit posts a Cache Error exception and initializes the D and SIdx fields in the local CacheErr register (see Chapter 14, CacheErr Register (27), for more information).
In correction mode, secondary-to-primary cache refill latency is increased by two PClk cycles. Multiple processors, operating in a lock-step fashion, remain synchronized in the presence of secondary cache data array correctable errors.
Table 9-5 presents the ECC matrix for the secondary cache data array.
Table 9-5
ECC Matrix for Secondary Cache Data Array
If a correctable error is detected, correction is automatically performed in-line. To inform the external agent that a correctable error had been detected and corrected, the processor asserts SysCorErr* for one SysClk cycle.
If an uncorrectable error is detected, the secondary cache unit posts a Cache Error exception and initializes the D and SIdx fields in the local CacheErr register.
Secondary cache data array correctable errors are monitored with Performance Counter 0.
Table 9-6 ECC Matrix for Secondary Cache Tag Array
Whenever the processor reads the secondary cache tag array, it checks the SCTagChk(6:0) bus for the proper ECC. If a correctable error is detected, correction is automatically performed in-line, without affecting latency. The processor asserts SysCorErr* for one SysClk cycle to inform the external agent that a correctable error has been detected and corrected. If an uncorrectable error is detected, the secondary cache unit posts a Cache Error exception and initializes the TA and SIdx fields in the local CacheErr register. The processor asserts SysUncErr* for one SysClk cycle to inform the external agent that an uncorrectable tag error has been detected.
Whenever the processor writes the secondary cache tag array, it drives the proper ECC on the SCTagChk(6:0) bus.